#include <stdio.h>

// 直接插入排序(带哨兵)
void InsertSort(int a[], int n)
{
    int i, j;
    for (i = 2; i <= n; i++)
    {
        if (a[i] < a[i - 1])
        {
            a[0] = a[i];
            for (j = i - 1; a[0]< a[j] ; --j)
            {
                a[j + 1] = a[j];
            }
            a[j + 1] = a[0];
        }
    }
}
void StraightInsertSort(int R[], int n)
{
    int i, j;
    for (i = 2; i <= n; i++)
    {
        R[0] = R[i];
        j = i - 1;
        while (R[0] < R[j])
        {
            R[j + 1] = R[j];
            j--;
        }
        R[j + 1] = R[0];
    }
}

int main()
{
    int a[] = {12, 54, 68, 1, 3, 5, 59};
    int len = sizeof(a) / sizeof(int) - 1; // 排序的实际长度是 len - 1

    InsertSort(a, len);
    for (int i = 1; i <= len; i++) // 从 1 开始输出，跳过哨兵
    {
        printf("%d ", a[i]); // 使用空格分隔数字
    }
    printf("\n"); // 在所有数字之后添加一个换行

    return 0;
}